A reconfigurable processor, having a significant advantage compared with a conventional single-core processor, an ASIC (Application Specific Integrated Circuit) and a field programmable logic array, is a new parallel processor and is a development direction of a circuit structure in the future. The reconfigurable processor often contains a plurality of arithmetic logic units which may be called a multi-core array. A routing unit with a high flexibility may be configured in the multi-core array to realize a diversity of interconnections of the plurality of arithmetic logic units. Therefore, the multi-core array connected by the routing unit may realize a high speed processing of data streams, and may have a tremendous advantage over the conventional single-core processor or a processor with a few cores in the performance. At the same time, the multi-core array has a tremendous advantage over a cured dedicated circuit in the flexibility.
Conditional branch statements refer to code statements in the form of IF-ELSE and consist of conditional judgment statements and conditional execution statements. The conditional execution statements may be divided into a plurality of mutually exclusive branches, and one of the plurality of mutually exclusive branches may be selected to be executed according to results of the conditional judgment statements. In a conventional general processor, an execution efficiency of the conditional branch statements has great impact on the overall performance. Currently, there are two main execution methods for executing the conditional branch statements: a branch prediction and a conditional execution.
In the conventional general processor which does not support the branch prediction, subsequent instructions need to be loaded when the results of the conditional judgment statements are not yet calculated, thus an assembly line of the processor may be blocked by control dependencies caused by the conditional branches. There are a few computing resources for the conventional general processor, so the branch prediction technology may predict that one of the plurality of branches is correct and this branch may be executed in advance. If the branch is successfully predicted, the assembly line will skip the control dependencies perfectly, but once the branch is incorrectly predicted, the assembly line may be cleared, which is more costly than blocking the assembly line. In addition, instructions executed in advance are not secure, and results of these instructions cannot change a system state (writing into a system register or sharing a memory) before the results of the conditional judgment statements are calculated.
The conditional execution is a method for converting the control dependencies into data dependencies. The control dependencies may be eliminated by the conditional execution, however, like the branch prediction, the conditional judgment statements need to be executed in advance, and the results of the instructions executed in advance cannot change the system state before the results of the conditional judgment statements are calculated.